This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
Utility computing can be described as a process of accessing computing resources, capabilities, services, business processes, applications, or any combination thereof, from a utility-like service over a network. A company can use a common infrastructure to provide multiple clients with utility computing service, thus benefiting through economies of scale. Similarly, a client (e.g., a company receiving utility computing services) can use a utility computing service provider to avoid expenses associated with providing these services itself. Such costs could include hardware costs, software costs, and operation costs, in addition to maintenance and support costs. Through utility computing, such a client benefits financially by only paying for infrastructure and services actually used.
One example of a computing utility is grid computing, in which spare compute cycles of one entity can be provided for use by another entity. Another example is a data center, where a large pool of information technology (IT) resources are centrally managed to meet the needs of business critical enterprise applications such as enterprise resource planning applications, database applications, customer relationship management applications, and general e-commerce applications. It should be noted that computing utilities such as these (e.g., grid computing and data center) generally require infrastructure and management support.
A typical large utility computing environment contains thousands of servers and storage devices connected through a shared high-speed network fabric. Possible goals of assembling such an environment include providing compute, networking, and storage resources to applications as needed. Accordingly, resources can be virtualized and shared across multiple applications to achieve economies of scale and increase return on investment.
Simultaneously managing an infrastructure along with applications can be very complex. However, despite the fact that manual assignment is often inefficient, error-prone, and costly, existing data centers typically utilize human operators to manually allocate resources to applications. Accordingly, excessive operation costs and problems with human error can result. Further, for large scale data centers, manual assignment of resources can be extremely difficult.